package com.hllxd.hism.star.basic.service.dao.mapper.mis;

import com.hllxd.hism.star.basic.service.model.metric.MetricServiceEntity;
import com.hllxd.hism.star.basic.service.model.metric.MetricSourceEntity;
import com.hllxd.hism.star.basic.service.model.metric.MetricSourceRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 数据地图
 * @author xiyong.lxy
 *
 * @date 2021/6/15 18:15
 */

@Mapper public interface DataContentMapper {

    /**
     * 获取指标主题信息
     * @return 实体信息
     */
    List<MetricSourceEntity> listMetricTopic();

    /**
     * 获取指标列表信息
     * @param topic 主题名称
     * @return 实体信息
     */
    List<MetricSourceEntity> listMetricSource(@Param("topic") String topic);

    /**
     * 获取指标列表信息
     * @param search 主题名称
     * @return 实体信息
     */
    List<MetricSourceEntity> searchMetricSource(@Param("search") String search);

    /**
     * 获取表信息
     * @param id 记录id
     * @return 表信息
     */
    MetricSourceEntity getMetricSource(@Param("id") Long id);

    /**
     * 获取表信息
     * @param topicTbl 主题表
     * @return 表信息
     */
    MetricSourceEntity getMetricSourceByTbl(@Param("topicTbl") String topicTbl);




    /**
     * 获取表上下游依赖表
     * @param topicTbl 主题表
     * @return 表信息
     */
    List<MetricSourceRelationEntity> listMetricSourceRelation(@Param("topicTbl") String topicTbl);

    /**
     * 写入表项
     * @param entity 记录
     * @return 写入记录数
     */
    Long insertMetricSource(MetricSourceEntity entity);



    /**
     * 更新指标信息
     * @param entity 记录
     * @return 更新记录数
     */
    Long updateMetricSource(MetricSourceEntity entity);



    /**
     * 获取指标列表信息
     * @param ids 记录ID类别
     * @return 成功失败
     */
    Boolean deleteMetricSource(@Param("ids") String ids);

    /**
     * 写入表关系
     * @param list 记录
     * @return 写入记录数
     */
    Long insertMetricSourceRelation(List<MetricSourceRelationEntity> list);

    /**
     * 删除表相关的关系
     * @param topicTbl 记录ID类别
     * @return 成功失败
     */
    Boolean deleteMetricSourceRelation(@Param("topicTbl") String topicTbl);

    /**
     * 获取表信息（hive表：dwd_zp_rock_table_meta_info）
     * @return 表信息
     */
//    MetricSourceEntity syncDpMeta(@Param("topicTbl") String topicTbl);


    List<MetricServiceEntity> listMetricServiceEntity1();

    /**
     * 单一服务详情
     * @param id
     * @return
     */
    List<MetricSourceEntity> listMetricSourceDetail( @Param("id") Long id);
}
